#ifndef _ENCODER_H_
#define _ENCODER_H_

#include "stm32f10x.h"

#define ENCODER_TIM TIM2
#define ENCODER_TIM_IRQn TIM2_IRQn
#define ENCODER_TIM_IRQHandler TIM2_IRQHandler

#define ENCODER_TIM_GPIO_PORT GPIOA
#define ENCODER_TIM_GPIO_CLK RCC_APB2Periph_GPIOA

typedef enum {
    ENCODER_DIR_FORWARD = 0,
    ENCODER_DIR_BACKWARD
} Encoder_Dir;

void GPIO_Encoder_Config(void);
void Encoder_Configuration(void);

int32_t Get_Encoder1_Total(void);
int32_t Get_Encoder2_Total(void);

int16_t Read_Encoder1(void);
void TIM_Overflow_IRQ_Config(void);
void Encoder_TIM3_Init(void);
// 转速计算函数
float Get_Speed_RPM(int32_t current_count, int32_t last_count, uint32_t time_interval_ms, int N);
int16_t Encoder_Get(void); // 获取编码器数值
#endif
